package br.furb.model.negocio;

import java.io.Serializable;
import java.util.List;

import org.apache.commons.codec.binary.Base64;

import br.furb.model.ApplicationSession;

public class Usuario implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -3328816134279167866L;
	
	private int id;
	private String nome;
	private String endereco;
	private String complemento;
	private String cep;
	private String bairro;
	private String cidade;
	private double salarioBase;
	private String fone;
	private String email;
	private String usuario;
	private String senha;
	
	public Usuario(int id, String nome, String endereco, String complemento, 
			String cep, String bairro, String cidade, double salarioBase, 
			String fone, String email, String usuario, char[] senha) {
		this.setId(id);
		this.setNome(nome);
		this.setEndereco(endereco);
		this.setComplemento(complemento);
		this.setCep(cep);
		this.setBairro(bairro);
		this.setCidade(cidade);
		this.setSalarioBase(salarioBase);
		this.setFone(fone);
		this.setEmail(email);
		this.setUsuario(usuario);
		this.setSenha(senha);
	}
	
	public int getId() {
		return id;
	}
	public String getNome() {
		return nome;
	}
	public String getEndereco() {
		return endereco;
	}
	public String getComplemento() {
		return complemento;
	}
	public String getCep() {
		return cep;
	}
	public String getBairro() {
		return bairro;
	}
	public String getCidade() {
		return cidade;
	}
	public double getSalarioBase() {
		return salarioBase;
	}
	public String getFone() {
		return fone;
	}
	public String getEmail() {
		return email;
	}
	public String getUsuario() {
		return usuario;
	}
	public String getSenha() {
		return senha;
	}
	public void setId(int id) {
		this.id = id;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}
	public void setCep(String cep) {
		this.cep = cep;
	}
	public void setBairro(String bairro) {
		this.bairro = bairro;
	}
	public void setCidade(String cidade) {
		this.cidade = cidade;
	}
	public void setSalarioBase(double salarioBase) {
		this.salarioBase = salarioBase;
	}
	public void setFone(String fone) {
		this.fone = fone;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}
	public void setSenha(char[] senha) {
		this.senha = new String(Base64.encodeBase64(new String(senha).getBytes()));
	}
	
	public double getComissao() {
		double ret = 0;
		
		List<Pedido> p = ApplicationSession.getInstance().getPedidos();
		for (Pedido pedido : p) {
			if (pedido.getAtendente().equals(this)) {
				ret += (pedido.getValorTotal() * 0.05);
			}
		}
		
		return ret;
	}
	
	public double getSalarioTotal() {
		return (getSalarioBase() + getComissao());
	}
	
	@Override
	public String toString() {
		return getId() + " - " + getNome();
	}
}